Skip to main content

第14章 ASCII编码

14.1 基本概念

ASCII全称美国信息交换标准代码,使用7位二进制,对应十进制0~127,共128个字符。 计算机存储char时占用1字节(8位),最高位固定为0。 作用:统一字符和数字的对应关系,实现文本存储、输入输出。

14.2 ASCII字符分类

14.2.1 控制字符(0~31、127)

不可打印,用于设备控制

  • \0 数值0:字符串结束标记
  • \n 数值10:换行
  • \r 数值13:回车
  • ESC 27、DEL 127

14.2.2 可打印字符(32~126)

  1. 空格:32
  2. 数字'0'~'9':48 ~ 57
  3. 大写'A'~'Z':65 ~ 90
  4. 小写'a'~'z':97 ~ 102
  5. 标点、运算符:! + - =

关键规律

小写字母 = 对应大写字母 + 32 例:'A'(65)+32 = 'a'(97)

14.3 扩展ASCII(8位,0~255)

0127和标准ASCII一致,128255为扩展符号。 缺陷:不同系统扩展字符表不统一,跨平台乱码,不推荐使用。

14.4 C/C++中的ASCII应用

char本质是1字节整数,可以和int互相转换

char ch = 'A';
int num = ch; // num = 65
char c2 = 97; // c2 = 'a'

1. 判断字符类型

// 判断大写
if(c >= 'A' && c <= 'Z')
// 判断小写
if(c >= 'a' && c <= 'z')
// 判断数字
if(c >= '0' && c <= '9')

2. 大小写转换

char toLower(char c){
if(c >= 'A' && c <= 'Z')
return c + 32;
return c;
}

3. 字符串判断结束

遍历字符数组时,str[i] == '\0'代表字符串末尾

14.5 ASCII局限

仅支持英文拉丁字符,无法存储中文; 中文使用GBK、Unicode(UTF-8)等编码。